import os  # 导入用于操作系统功能的模块
import time  # 导入用于时间操作的模块
import subprocess  # 导入用于启动新进程的模块
import pyautogui as gui  # 导入用于自动化 GUI 操作的模块
import rename  # 导入自定义的重命名模块

def get_file_names(folder_path):
    """获取指定文件夹下的所有文件名"""
    return set(os.listdir(folder_path))  # 返回文件夹中的所有文件名作为集合

def monitor_folder(folder_path):
    # 打开文件夹
    open_file_explorer(folder_path)
    """监控文件夹，判断是否有文件重命名"""
    previous_files = get_file_names(folder_path)  # 获取初始文件名集合
    print(f"开始监控文件夹: {folder_path}")

    # 错误文件夹集合
    err_tag = 0

    while True:
        time.sleep(1)  # 每秒检查一次文件夹
        current_files = get_file_names(folder_path)  # 获取当前文件名集合

        # 检查文件是否发生重命名或变化
        if previous_files != current_files:
            print("检测到文件重命名或文件变化。")
            err_tag = rename.rename_files_in_directory(folder_path)  # 调用重命名函数处理文件
            time.sleep(0.1)  # 暂停0.1秒
            close_explorer()  # 关闭文件管理器窗口
            break  # 退出循环
        previous_files = current_files  # 更新之前的文件名集合

    return err_tag

def open_file_explorer(folder_path):
    """打开指定文件夹的文件管理器"""
    if os.path.exists(folder_path):  # 检查文件夹是否存在
        subprocess.Popen(f'explorer "{folder_path}"')  # 使用 explorer 打开文件夹
        print(f"已打开文件夹: {folder_path}")
    else:
        print("指定的文件夹不存在。")  # 文件夹不存在时的提示

def close_explorer():
    """关闭所有文件夹管理器窗口"""
    gui.hotkey('alt', 'f4')  # 模拟按下 Alt + F4 组合键关闭窗口
    print("文件管理器已关闭。\n")  # 打印关闭窗口的提示
